package com.cdp.web.controller.system;

import com.cdp.common.core.domain.AjaxResult;
import com.cdp.common.core.domain.entity.SysSand;
import com.cdp.system.dto.SandDTO;
import com.cdp.system.dto.SandSecondDTO;
import com.cdp.system.service.ISysSandService;
import com.cdp.system.vo.IdsVO;
import com.cdp.system.vo.SandFineneVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.stream.Collectors;

import static com.cdp.framework.datasource.DynamicDataSourceContextHolder.log;

/**
 * 砂信息
 */
@RestController
@RequestMapping("/system/sand")
public class SysSandController {

    @Autowired
    private ISysSandService sysSandService;

    /**
     * 查询砂
     *
     * @return
     */
    @GetMapping("listSand")
    private AjaxResult listSand() {
        List<SysSand> listSand = sysSandService.listSand();
        return AjaxResult.success(listSand);
    }


    /**
     * 模糊查询砂信息
     *
     * @param sandDTO 查询条件
     * @return 查询结果
     */
    //@PostMapping("/listMistedSand")
    public AjaxResult listMistedSand(@RequestBody SandDTO sandDTO) {

        try {

            return sysSandService.listMistedSand(sandDTO);
        } catch (Exception e) {
            log.error("查询砂信息失败，参数为: {}", sandDTO, e);
            return AjaxResult.error("查询砂信息失败: " + e.getMessage());
        }
    }




    /**
     * 模糊查询砂信息
     *
     * @param
     * @return 查询结果
     */
//    @PostMapping("/listMistedSandSecond")
    @PostMapping("/listMistedSand")
    public AjaxResult listMistedSandSecond(@RequestBody SandSecondDTO sandSecondDTO) {

        try {

            return sysSandService.listMistedSandSecond(sandSecondDTO);
        } catch (Exception e) {
            log.error("查询砂信息失败，参数为: {}", sandSecondDTO, e);
            return AjaxResult.error("查询砂信息失败: " + e.getMessage());
        }
    }





    /**
     * 根据砂id查询id集合
     *
     * @return
     */
    @GetMapping("/querySandIdsById")
    public AjaxResult querySandIdsById(@RequestParam(required = false) Integer id) {
        // 调用服务层获取数据
        List<IdsVO> idsVOS = sysSandService.querySandIdsById(id);

        // 将 idsVOS 中的 ids 列表转换为所需格式
        List<SandFineneVO> sandFinenessVOList = idsVOS.stream()
                .flatMap(idsVO -> idsVO.getIds().stream()) // 提取 ids 列表
                .map(idValue -> {
                    SandFineneVO vo = new SandFineneVO();
                    vo.setValue(String.valueOf(idValue)); // 将 Integer 转为 String
                    vo.setLabel(String.valueOf(idValue));
                    return vo;
                })
                .collect(Collectors.toList());

        // 返回所需格式数据
        return AjaxResult.success(sandFinenessVOList);
    }




}
